Delete (i.e. move to archive) a list of revisions
authorTim Starling <tstarling@users.mediawiki.org>
Fri, 12 May 2006 08:14:57 +0000 (08:14 +0000)
committerTim Starling <tstarling@users.mediawiki.org>
Fri, 12 May 2006 08:14:57 +0000 (08:14 +0000)
maintenance/deleteRevision.php [new file with mode: 0644]

diff --git a/maintenance/deleteRevision.php b/maintenance/deleteRevision.php
new file mode 100644 (file)
index 0000000..e7d005b
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+require_once( 'commandLine.inc' );
+
+$dbw =& wfGetDB( DB_MASTER );
+
+if ( count( $args ) == 0 ) {
+       echo "Usage: php deleteRevision.php <revid> [<revid> ...]\n";
+       exit(1);
+}
+
+echo "Deleting revision(s) " . implode( ',', $args ) . " from $wgDBname...\n";
+
+$affected = 0;
+foreach ( $args as $revID ) {
+       $dbw->insertSelect( 'archive', array( 'page', 'revision' ),
+               array(
+                       'ar_namespace'  => 'page_namespace',
+                       'ar_title'      => 'page_title',
+                       'ar_comment'    => 'rev_comment',
+                       'ar_user'       => 'rev_user',
+                       'ar_user_text'  => 'rev_user_text',
+                       'ar_timestamp'  => 'rev_timestamp',
+                       'ar_minor_edit' => 'rev_minor_edit',
+                       'ar_rev_id'     => 'rev_id',
+                       'ar_text_id'    => 'rev_text_id',
+               ), array(
+                       'rev_id' => $revID,
+                       'page_id = rev_page'
+               ), $fname
+       );
+       if ( !$dbw->affectedRows() ) {
+               echo "Revision $revID not found\n";
+       } else {
+               $affected += $dbw->affectedRows();
+               $dbw->delete( 'revision', array( 'rev_id' => $revID ) );
+       }
+}
+
+print "Deleted $affected revisions\n";
+?>